


<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    
    
    <meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
    <title>Coverage for /home/zjh/.virtualenvs/h4/lib/python2.7/site-packages/django/core/management/__init__.py: 49%</title>
    <link rel="stylesheet" href="style.css" type="text/css">
    
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript" src="jquery.hotkeys.js"></script>
    <script type="text/javascript" src="jquery.isonscreen.js"></script>
    <script type="text/javascript" src="coverage_html.js"></script>
    <script type="text/javascript">
        jQuery(document).ready(coverage.pyfile_ready);
    </script>
</head>
<body class="pyfile">

<div id="header">
    <div class="content">
        <h1>Coverage for <b>/home/zjh/.virtualenvs/h4/lib/python2.7/site-packages/django/core/management/__init__.py</b> :
            <span class="pc_cov">49%</span>
        </h1>

        <img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />

        <h2 class="stats">
            160 statements &nbsp;
            <span class="run hide_run shortkey_r button_toggle_run">78 run</span>
            <span class="mis shortkey_m button_toggle_mis">82 missing</span>
            <span class="exc shortkey_x button_toggle_exc">0 excluded</span>

            
        </h2>
    </div>
</div>

<div class="help_panel">
    <img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
    <p class="legend">Hot-keys on this page</p>
    <div>
    <p class="keyhelp">
        <span class="key">r</span>
        <span class="key">m</span>
        <span class="key">x</span>
        <span class="key">p</span> &nbsp; toggle line displays
    </p>
    <p class="keyhelp">
        <span class="key">j</span>
        <span class="key">k</span> &nbsp; next/prev highlighted chunk
    </p>
    <p class="keyhelp">
        <span class="key">0</span> &nbsp; (zero) top of page
    </p>
    <p class="keyhelp">
        <span class="key">1</span> &nbsp; (one) first highlighted chunk
    </p>
    </div>
</div>

<div id="source">
    <table>
        <tr>
            <td class="linenos">
<p id="n1" class="stm run hide_run"><a href="#n1">1</a></p>
<p id="n2" class="pln"><a href="#n2">2</a></p>
<p id="n3" class="stm run hide_run"><a href="#n3">3</a></p>
<p id="n4" class="stm run hide_run"><a href="#n4">4</a></p>
<p id="n5" class="stm run hide_run"><a href="#n5">5</a></p>
<p id="n6" class="stm run hide_run"><a href="#n6">6</a></p>
<p id="n7" class="stm run hide_run"><a href="#n7">7</a></p>
<p id="n8" class="pln"><a href="#n8">8</a></p>
<p id="n9" class="stm run hide_run"><a href="#n9">9</a></p>
<p id="n10" class="stm run hide_run"><a href="#n10">10</a></p>
<p id="n11" class="stm run hide_run"><a href="#n11">11</a></p>
<p id="n12" class="stm run hide_run"><a href="#n12">12</a></p>
<p id="n13" class="stm run hide_run"><a href="#n13">13</a></p>
<p id="n14" class="pln"><a href="#n14">14</a></p>
<p id="n15" class="stm run hide_run"><a href="#n15">15</a></p>
<p id="n16" class="stm run hide_run"><a href="#n16">16</a></p>
<p id="n17" class="stm run hide_run"><a href="#n17">17</a></p>
<p id="n18" class="pln"><a href="#n18">18</a></p>
<p id="n19" class="pln"><a href="#n19">19</a></p>
<p id="n20" class="stm run hide_run"><a href="#n20">20</a></p>
<p id="n21" class="pln"><a href="#n21">21</a></p>
<p id="n22" class="pln"><a href="#n22">22</a></p>
<p id="n23" class="pln"><a href="#n23">23</a></p>
<p id="n24" class="pln"><a href="#n24">24</a></p>
<p id="n25" class="pln"><a href="#n25">25</a></p>
<p id="n26" class="pln"><a href="#n26">26</a></p>
<p id="n27" class="stm run hide_run"><a href="#n27">27</a></p>
<p id="n28" class="pln"><a href="#n28">28</a></p>
<p id="n29" class="stm run hide_run"><a href="#n29">29</a></p>
<p id="n30" class="stm run hide_run"><a href="#n30">30</a></p>
<p id="n31" class="pln"><a href="#n31">31</a></p>
<p id="n32" class="pln"><a href="#n32">32</a></p>
<p id="n33" class="pln"><a href="#n33">33</a></p>
<p id="n34" class="stm run hide_run"><a href="#n34">34</a></p>
<p id="n35" class="pln"><a href="#n35">35</a></p>
<p id="n36" class="pln"><a href="#n36">36</a></p>
<p id="n37" class="pln"><a href="#n37">37</a></p>
<p id="n38" class="pln"><a href="#n38">38</a></p>
<p id="n39" class="pln"><a href="#n39">39</a></p>
<p id="n40" class="stm mis"><a href="#n40">40</a></p>
<p id="n41" class="stm mis"><a href="#n41">41</a></p>
<p id="n42" class="pln"><a href="#n42">42</a></p>
<p id="n43" class="pln"><a href="#n43">43</a></p>
<p id="n44" class="stm run hide_run"><a href="#n44">44</a></p>
<p id="n45" class="pln"><a href="#n45">45</a></p>
<p id="n46" class="pln"><a href="#n46">46</a></p>
<p id="n47" class="pln"><a href="#n47">47</a></p>
<p id="n48" class="pln"><a href="#n48">48</a></p>
<p id="n49" class="pln"><a href="#n49">49</a></p>
<p id="n50" class="pln"><a href="#n50">50</a></p>
<p id="n51" class="pln"><a href="#n51">51</a></p>
<p id="n52" class="pln"><a href="#n52">52</a></p>
<p id="n53" class="pln"><a href="#n53">53</a></p>
<p id="n54" class="pln"><a href="#n54">54</a></p>
<p id="n55" class="pln"><a href="#n55">55</a></p>
<p id="n56" class="pln"><a href="#n56">56</a></p>
<p id="n57" class="pln"><a href="#n57">57</a></p>
<p id="n58" class="pln"><a href="#n58">58</a></p>
<p id="n59" class="pln"><a href="#n59">59</a></p>
<p id="n60" class="pln"><a href="#n60">60</a></p>
<p id="n61" class="pln"><a href="#n61">61</a></p>
<p id="n62" class="pln"><a href="#n62">62</a></p>
<p id="n63" class="pln"><a href="#n63">63</a></p>
<p id="n64" class="pln"><a href="#n64">64</a></p>
<p id="n65" class="pln"><a href="#n65">65</a></p>
<p id="n66" class="pln"><a href="#n66">66</a></p>
<p id="n67" class="stm run hide_run"><a href="#n67">67</a></p>
<p id="n68" class="pln"><a href="#n68">68</a></p>
<p id="n69" class="stm run hide_run"><a href="#n69">69</a></p>
<p id="n70" class="stm mis"><a href="#n70">70</a></p>
<p id="n71" class="pln"><a href="#n71">71</a></p>
<p id="n72" class="stm run hide_run"><a href="#n72">72</a></p>
<p id="n73" class="stm run hide_run"><a href="#n73">73</a></p>
<p id="n74" class="stm run hide_run"><a href="#n74">74</a></p>
<p id="n75" class="pln"><a href="#n75">75</a></p>
<p id="n76" class="stm run hide_run"><a href="#n76">76</a></p>
<p id="n77" class="pln"><a href="#n77">77</a></p>
<p id="n78" class="pln"><a href="#n78">78</a></p>
<p id="n79" class="stm run hide_run"><a href="#n79">79</a></p>
<p id="n80" class="pln"><a href="#n80">80</a></p>
<p id="n81" class="pln"><a href="#n81">81</a></p>
<p id="n82" class="pln"><a href="#n82">82</a></p>
<p id="n83" class="pln"><a href="#n83">83</a></p>
<p id="n84" class="pln"><a href="#n84">84</a></p>
<p id="n85" class="pln"><a href="#n85">85</a></p>
<p id="n86" class="pln"><a href="#n86">86</a></p>
<p id="n87" class="pln"><a href="#n87">87</a></p>
<p id="n88" class="pln"><a href="#n88">88</a></p>
<p id="n89" class="pln"><a href="#n89">89</a></p>
<p id="n90" class="pln"><a href="#n90">90</a></p>
<p id="n91" class="stm mis"><a href="#n91">91</a></p>
<p id="n92" class="stm mis"><a href="#n92">92</a></p>
<p id="n93" class="stm mis"><a href="#n93">93</a></p>
<p id="n94" class="stm mis"><a href="#n94">94</a></p>
<p id="n95" class="pln"><a href="#n95">95</a></p>
<p id="n96" class="stm mis"><a href="#n96">96</a></p>
<p id="n97" class="pln"><a href="#n97">97</a></p>
<p id="n98" class="stm mis"><a href="#n98">98</a></p>
<p id="n99" class="pln"><a href="#n99">99</a></p>
<p id="n100" class="stm mis"><a href="#n100">100</a></p>
<p id="n101" class="pln"><a href="#n101">101</a></p>
<p id="n102" class="pln"><a href="#n102">102</a></p>
<p id="n103" class="stm mis"><a href="#n103">103</a></p>
<p id="n104" class="stm mis"><a href="#n104">104</a></p>
<p id="n105" class="pln"><a href="#n105">105</a></p>
<p id="n106" class="stm mis"><a href="#n106">106</a></p>
<p id="n107" class="pln"><a href="#n107">107</a></p>
<p id="n108" class="stm mis"><a href="#n108">108</a></p>
<p id="n109" class="stm mis"><a href="#n109">109</a></p>
<p id="n110" class="stm mis"><a href="#n110">110</a></p>
<p id="n111" class="pln"><a href="#n111">111</a></p>
<p id="n112" class="stm mis"><a href="#n112">112</a></p>
<p id="n113" class="pln"><a href="#n113">113</a></p>
<p id="n114" class="pln"><a href="#n114">114</a></p>
<p id="n115" class="stm mis"><a href="#n115">115</a></p>
<p id="n116" class="stm mis"><a href="#n116">116</a></p>
<p id="n117" class="stm mis"><a href="#n117">117</a></p>
<p id="n118" class="stm mis"><a href="#n118">118</a></p>
<p id="n119" class="pln"><a href="#n119">119</a></p>
<p id="n120" class="stm mis"><a href="#n120">120</a></p>
<p id="n121" class="pln"><a href="#n121">121</a></p>
<p id="n122" class="pln"><a href="#n122">122</a></p>
<p id="n123" class="stm run hide_run"><a href="#n123">123</a></p>
<p id="n124" class="pln"><a href="#n124">124</a></p>
<p id="n125" class="pln"><a href="#n125">125</a></p>
<p id="n126" class="pln"><a href="#n126">126</a></p>
<p id="n127" class="pln"><a href="#n127">127</a></p>
<p id="n128" class="pln"><a href="#n128">128</a></p>
<p id="n129" class="pln"><a href="#n129">129</a></p>
<p id="n130" class="stm run hide_run"><a href="#n130">130</a></p>
<p id="n131" class="stm run hide_run"><a href="#n131">131</a></p>
<p id="n132" class="stm run hide_run"><a href="#n132">132</a></p>
<p id="n133" class="stm run hide_run"><a href="#n133">133</a></p>
<p id="n134" class="pln"><a href="#n134">134</a></p>
<p id="n135" class="stm run hide_run"><a href="#n135">135</a></p>
<p id="n136" class="pln"><a href="#n136">136</a></p>
<p id="n137" class="pln"><a href="#n137">137</a></p>
<p id="n138" class="pln"><a href="#n138">138</a></p>
<p id="n139" class="stm run hide_run"><a href="#n139">139</a></p>
<p id="n140" class="stm mis"><a href="#n140">140</a></p>
<p id="n141" class="pln"><a href="#n141">141</a></p>
<p id="n142" class="stm run hide_run"><a href="#n142">142</a></p>
<p id="n143" class="pln"><a href="#n143">143</a></p>
<p id="n144" class="pln"><a href="#n144">144</a></p>
<p id="n145" class="pln"><a href="#n145">145</a></p>
<p id="n146" class="pln"><a href="#n146">146</a></p>
<p id="n147" class="pln"><a href="#n147">147</a></p>
<p id="n148" class="stm run hide_run"><a href="#n148">148</a></p>
<p id="n149" class="stm run hide_run"><a href="#n149">149</a></p>
<p id="n150" class="stm run hide_run"><a href="#n150">150</a></p>
<p id="n151" class="stm run hide_run"><a href="#n151">151</a></p>
<p id="n152" class="pln"><a href="#n152">152</a></p>
<p id="n153" class="stm run hide_run"><a href="#n153">153</a></p>
<p id="n154" class="stm run hide_run"><a href="#n154">154</a></p>
<p id="n155" class="stm run hide_run"><a href="#n155">155</a></p>
<p id="n156" class="stm run hide_run"><a href="#n156">156</a></p>
<p id="n157" class="stm run hide_run"><a href="#n157">157</a></p>
<p id="n158" class="stm run hide_run"><a href="#n158">158</a></p>
<p id="n159" class="stm run hide_run"><a href="#n159">159</a></p>
<p id="n160" class="stm run hide_run"><a href="#n160">160</a></p>
<p id="n161" class="pln"><a href="#n161">161</a></p>
<p id="n162" class="stm run hide_run"><a href="#n162">162</a></p>
<p id="n163" class="stm mis"><a href="#n163">163</a></p>
<p id="n164" class="pln"><a href="#n164">164</a></p>
<p id="n165" class="pln"><a href="#n165">165</a></p>
<p id="n166" class="pln"><a href="#n166">166</a></p>
<p id="n167" class="pln"><a href="#n167">167</a></p>
<p id="n168" class="stm run hide_run"><a href="#n168">168</a></p>
<p id="n169" class="pln"><a href="#n169">169</a></p>
<p id="n170" class="stm run hide_run"><a href="#n170">170</a></p>
<p id="n171" class="pln"><a href="#n171">171</a></p>
<p id="n172" class="pln"><a href="#n172">172</a></p>
<p id="n173" class="pln"><a href="#n173">173</a></p>
<p id="n174" class="pln"><a href="#n174">174</a></p>
<p id="n175" class="pln"><a href="#n175">175</a></p>
<p id="n176" class="pln"><a href="#n176">176</a></p>
<p id="n177" class="stm mis"><a href="#n177">177</a></p>
<p id="n178" class="stm mis"><a href="#n178">178</a></p>
<p id="n179" class="stm mis"><a href="#n179">179</a></p>
<p id="n180" class="stm mis"><a href="#n180">180</a></p>
<p id="n181" class="pln"><a href="#n181">181</a></p>
<p id="n182" class="stm mis"><a href="#n182">182</a></p>
<p id="n183" class="stm mis"><a href="#n183">183</a></p>
<p id="n184" class="pln"><a href="#n184">184</a></p>
<p id="n185" class="stm mis"><a href="#n185">185</a></p>
<p id="n186" class="stm mis"><a href="#n186">186</a></p>
<p id="n187" class="pln"><a href="#n187">187</a></p>
<p id="n188" class="stm mis"><a href="#n188">188</a></p>
<p id="n189" class="pln"><a href="#n189">189</a></p>
<p id="n190" class="stm mis"><a href="#n190">190</a></p>
<p id="n191" class="stm mis"><a href="#n191">191</a></p>
<p id="n192" class="pln"><a href="#n192">192</a></p>
<p id="n193" class="stm run hide_run"><a href="#n193">193</a></p>
<p id="n194" class="pln"><a href="#n194">194</a></p>
<p id="n195" class="pln"><a href="#n195">195</a></p>
<p id="n196" class="pln"><a href="#n196">196</a></p>
<p id="n197" class="pln"><a href="#n197">197</a></p>
<p id="n198" class="pln"><a href="#n198">198</a></p>
<p id="n199" class="pln"><a href="#n199">199</a></p>
<p id="n200" class="pln"><a href="#n200">200</a></p>
<p id="n201" class="pln"><a href="#n201">201</a></p>
<p id="n202" class="pln"><a href="#n202">202</a></p>
<p id="n203" class="pln"><a href="#n203">203</a></p>
<p id="n204" class="pln"><a href="#n204">204</a></p>
<p id="n205" class="pln"><a href="#n205">205</a></p>
<p id="n206" class="pln"><a href="#n206">206</a></p>
<p id="n207" class="pln"><a href="#n207">207</a></p>
<p id="n208" class="pln"><a href="#n208">208</a></p>
<p id="n209" class="pln"><a href="#n209">209</a></p>
<p id="n210" class="pln"><a href="#n210">210</a></p>
<p id="n211" class="pln"><a href="#n211">211</a></p>
<p id="n212" class="pln"><a href="#n212">212</a></p>
<p id="n213" class="pln"><a href="#n213">213</a></p>
<p id="n214" class="pln"><a href="#n214">214</a></p>
<p id="n215" class="stm run hide_run"><a href="#n215">215</a></p>
<p id="n216" class="stm run hide_run"><a href="#n216">216</a></p>
<p id="n217" class="pln"><a href="#n217">217</a></p>
<p id="n218" class="stm mis"><a href="#n218">218</a></p>
<p id="n219" class="stm mis"><a href="#n219">219</a></p>
<p id="n220" class="pln"><a href="#n220">220</a></p>
<p id="n221" class="stm mis"><a href="#n221">221</a></p>
<p id="n222" class="stm mis"><a href="#n222">222</a></p>
<p id="n223" class="stm mis"><a href="#n223">223</a></p>
<p id="n224" class="stm mis"><a href="#n224">224</a></p>
<p id="n225" class="pln"><a href="#n225">225</a></p>
<p id="n226" class="stm mis"><a href="#n226">226</a></p>
<p id="n227" class="stm mis"><a href="#n227">227</a></p>
<p id="n228" class="pln"><a href="#n228">228</a></p>
<p id="n229" class="pln"><a href="#n229">229</a></p>
<p id="n230" class="stm mis"><a href="#n230">230</a></p>
<p id="n231" class="stm mis"><a href="#n231">231</a></p>
<p id="n232" class="pln"><a href="#n232">232</a></p>
<p id="n233" class="pln"><a href="#n233">233</a></p>
<p id="n234" class="stm mis"><a href="#n234">234</a></p>
<p id="n235" class="stm mis"><a href="#n235">235</a></p>
<p id="n236" class="pln"><a href="#n236">236</a></p>
<p id="n237" class="pln"><a href="#n237">237</a></p>
<p id="n238" class="stm mis"><a href="#n238">238</a></p>
<p id="n239" class="stm mis"><a href="#n239">239</a></p>
<p id="n240" class="stm mis"><a href="#n240">240</a></p>
<p id="n241" class="pln"><a href="#n241">241</a></p>
<p id="n242" class="stm mis"><a href="#n242">242</a></p>
<p id="n243" class="pln"><a href="#n243">243</a></p>
<p id="n244" class="stm mis"><a href="#n244">244</a></p>
<p id="n245" class="stm mis"><a href="#n245">245</a></p>
<p id="n246" class="pln"><a href="#n246">246</a></p>
<p id="n247" class="stm mis"><a href="#n247">247</a></p>
<p id="n248" class="stm mis"><a href="#n248">248</a></p>
<p id="n249" class="pln"><a href="#n249">249</a></p>
<p id="n250" class="pln"><a href="#n250">250</a></p>
<p id="n251" class="stm mis"><a href="#n251">251</a></p>
<p id="n252" class="stm mis"><a href="#n252">252</a></p>
<p id="n253" class="stm mis"><a href="#n253">253</a></p>
<p id="n254" class="stm mis"><a href="#n254">254</a></p>
<p id="n255" class="pln"><a href="#n255">255</a></p>
<p id="n256" class="pln"><a href="#n256">256</a></p>
<p id="n257" class="stm mis"><a href="#n257">257</a></p>
<p id="n258" class="pln"><a href="#n258">258</a></p>
<p id="n259" class="pln"><a href="#n259">259</a></p>
<p id="n260" class="stm mis"><a href="#n260">260</a></p>
<p id="n261" class="stm mis"><a href="#n261">261</a></p>
<p id="n262" class="pln"><a href="#n262">262</a></p>
<p id="n263" class="pln"><a href="#n263">263</a></p>
<p id="n264" class="stm mis"><a href="#n264">264</a></p>
<p id="n265" class="stm mis"><a href="#n265">265</a></p>
<p id="n266" class="stm mis"><a href="#n266">266</a></p>
<p id="n267" class="pln"><a href="#n267">267</a></p>
<p id="n268" class="stm mis"><a href="#n268">268</a></p>
<p id="n269" class="stm mis"><a href="#n269">269</a></p>
<p id="n270" class="stm mis"><a href="#n270">270</a></p>
<p id="n271" class="stm mis"><a href="#n271">271</a></p>
<p id="n272" class="pln"><a href="#n272">272</a></p>
<p id="n273" class="stm run hide_run"><a href="#n273">273</a></p>
<p id="n274" class="pln"><a href="#n274">274</a></p>
<p id="n275" class="pln"><a href="#n275">275</a></p>
<p id="n276" class="pln"><a href="#n276">276</a></p>
<p id="n277" class="pln"><a href="#n277">277</a></p>
<p id="n278" class="stm run hide_run"><a href="#n278">278</a></p>
<p id="n279" class="stm run hide_run"><a href="#n279">279</a></p>
<p id="n280" class="stm run hide_run"><a href="#n280">280</a></p>
<p id="n281" class="stm run hide_run"><a href="#n281">281</a></p>
<p id="n282" class="pln"><a href="#n282">282</a></p>
<p id="n283" class="pln"><a href="#n283">283</a></p>
<p id="n284" class="pln"><a href="#n284">284</a></p>
<p id="n285" class="pln"><a href="#n285">285</a></p>
<p id="n286" class="stm run hide_run"><a href="#n286">286</a></p>
<p id="n287" class="stm run hide_run"><a href="#n287">287</a></p>
<p id="n288" class="stm run hide_run"><a href="#n288">288</a></p>
<p id="n289" class="stm run hide_run"><a href="#n289">289</a></p>
<p id="n290" class="stm run hide_run"><a href="#n290">290</a></p>
<p id="n291" class="stm run hide_run"><a href="#n291">291</a></p>
<p id="n292" class="stm run hide_run"><a href="#n292">292</a></p>
<p id="n293" class="stm mis"><a href="#n293">293</a></p>
<p id="n294" class="stm mis"><a href="#n294">294</a></p>
<p id="n295" class="pln"><a href="#n295">295</a></p>
<p id="n296" class="stm run hide_run"><a href="#n296">296</a></p>
<p id="n297" class="pln"><a href="#n297">297</a></p>
<p id="n298" class="pln"><a href="#n298">298</a></p>
<p id="n299" class="pln"><a href="#n299">299</a></p>
<p id="n300" class="pln"><a href="#n300">300</a></p>
<p id="n301" class="pln"><a href="#n301">301</a></p>
<p id="n302" class="stm run hide_run"><a href="#n302">302</a></p>
<p id="n303" class="stm run hide_run"><a href="#n303">303</a></p>
<p id="n304" class="stm mis"><a href="#n304">304</a></p>
<p id="n305" class="stm mis"><a href="#n305">305</a></p>
<p id="n306" class="pln"><a href="#n306">306</a></p>
<p id="n307" class="pln"><a href="#n307">307</a></p>
<p id="n308" class="stm mis"><a href="#n308">308</a></p>
<p id="n309" class="stm mis"><a href="#n309">309</a></p>
<p id="n310" class="pln"><a href="#n310">310</a></p>
<p id="n311" class="stm run hide_run"><a href="#n311">311</a></p>
<p id="n312" class="stm run hide_run"><a href="#n312">312</a></p>
<p id="n313" class="pln"><a href="#n313">313</a></p>
<p id="n314" class="stm run hide_run"><a href="#n314">314</a></p>
<p id="n315" class="pln"><a href="#n315">315</a></p>
<p id="n316" class="stm run hide_run"><a href="#n316">316</a></p>
<p id="n317" class="stm run hide_run"><a href="#n317">317</a></p>
<p id="n318" class="stm mis"><a href="#n318">318</a></p>
<p id="n319" class="stm run hide_run"><a href="#n319">319</a></p>
<p id="n320" class="stm run hide_run"><a href="#n320">320</a></p>
<p id="n321" class="pln"><a href="#n321">321</a></p>
<p id="n322" class="stm mis"><a href="#n322">322</a></p>
<p id="n323" class="pln"><a href="#n323">323</a></p>
<p id="n324" class="pln"><a href="#n324">324</a></p>
<p id="n325" class="stm mis"><a href="#n325">325</a></p>
<p id="n326" class="stm mis"><a href="#n326">326</a></p>
<p id="n327" class="stm mis"><a href="#n327">327</a></p>
<p id="n328" class="stm mis"><a href="#n328">328</a></p>
<p id="n329" class="pln"><a href="#n329">329</a></p>
<p id="n330" class="stm mis"><a href="#n330">330</a></p>
<p id="n331" class="pln"><a href="#n331">331</a></p>
<p id="n332" class="pln"><a href="#n332">332</a></p>
<p id="n333" class="stm run hide_run"><a href="#n333">333</a></p>
<p id="n334" class="pln"><a href="#n334">334</a></p>
<p id="n335" class="pln"><a href="#n335">335</a></p>
<p id="n336" class="pln"><a href="#n336">336</a></p>
<p id="n337" class="stm run hide_run"><a href="#n337">337</a></p>
<p id="n338" class="stm run hide_run"><a href="#n338">338</a></p>

            </td>
            <td class="text">
<p id="t1" class="stm run hide_run"><span class="key">from</span> <span class="nam">__future__</span> <span class="key">import</span> <span class="nam">unicode_literals</span><span class="strut">&nbsp;</span></p>
<p id="t2" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t3" class="stm run hide_run"><span class="key">import</span> <span class="nam">collections</span><span class="strut">&nbsp;</span></p>
<p id="t4" class="stm run hide_run"><span class="key">from</span> <span class="nam">importlib</span> <span class="key">import</span> <span class="nam">import_module</span><span class="strut">&nbsp;</span></p>
<p id="t5" class="stm run hide_run"><span class="key">import</span> <span class="nam">os</span><span class="strut">&nbsp;</span></p>
<p id="t6" class="stm run hide_run"><span class="key">import</span> <span class="nam">pkgutil</span><span class="strut">&nbsp;</span></p>
<p id="t7" class="stm run hide_run"><span class="key">import</span> <span class="nam">sys</span><span class="strut">&nbsp;</span></p>
<p id="t8" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t9" class="stm run hide_run"><span class="key">import</span> <span class="nam">django</span><span class="strut">&nbsp;</span></p>
<p id="t10" class="stm run hide_run"><span class="key">from</span> <span class="nam">django</span><span class="op">.</span><span class="nam">apps</span> <span class="key">import</span> <span class="nam">apps</span><span class="strut">&nbsp;</span></p>
<p id="t11" class="stm run hide_run"><span class="key">from</span> <span class="nam">django</span><span class="op">.</span><span class="nam">conf</span> <span class="key">import</span> <span class="nam">settings</span><span class="strut">&nbsp;</span></p>
<p id="t12" class="stm run hide_run"><span class="key">from</span> <span class="nam">django</span><span class="op">.</span><span class="nam">core</span><span class="op">.</span><span class="nam">exceptions</span> <span class="key">import</span> <span class="nam">ImproperlyConfigured</span><span class="strut">&nbsp;</span></p>
<p id="t13" class="stm run hide_run"><span class="key">from</span> <span class="nam">django</span><span class="op">.</span><span class="nam">core</span><span class="op">.</span><span class="nam">management</span><span class="op">.</span><span class="nam">base</span> <span class="key">import</span> <span class="op">(</span><span class="nam">BaseCommand</span><span class="op">,</span> <span class="nam">CommandError</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t14" class="pln">    <span class="nam">CommandParser</span><span class="op">,</span> <span class="nam">handle_default_options</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t15" class="stm run hide_run"><span class="key">from</span> <span class="nam">django</span><span class="op">.</span><span class="nam">core</span><span class="op">.</span><span class="nam">management</span><span class="op">.</span><span class="nam">color</span> <span class="key">import</span> <span class="nam">color_style</span><span class="strut">&nbsp;</span></p>
<p id="t16" class="stm run hide_run"><span class="key">from</span> <span class="nam">django</span><span class="op">.</span><span class="nam">utils</span> <span class="key">import</span> <span class="nam">lru_cache</span><span class="op">,</span> <span class="nam">six</span><span class="strut">&nbsp;</span></p>
<p id="t17" class="stm run hide_run"><span class="key">from</span> <span class="nam">django</span><span class="op">.</span><span class="nam">utils</span><span class="op">.</span><span class="nam">_os</span> <span class="key">import</span> <span class="nam">npath</span><span class="op">,</span> <span class="nam">upath</span><span class="strut">&nbsp;</span></p>
<p id="t18" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t19" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t20" class="stm run hide_run"><span class="key">def</span> <span class="nam">find_commands</span><span class="op">(</span><span class="nam">management_dir</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t21" class="pln">    <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t22" class="pln"><span class="str">    Given a path to a management directory, returns a list of all the command</span><span class="strut">&nbsp;</span></p>
<p id="t23" class="pln"><span class="str">    names that are available.</span><span class="strut">&nbsp;</span></p>
<p id="t24" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t25" class="pln"><span class="str">    Returns an empty list if no commands are defined.</span><span class="strut">&nbsp;</span></p>
<p id="t26" class="pln"><span class="str">    """</span><span class="strut">&nbsp;</span></p>
<p id="t27" class="stm run hide_run">    <span class="nam">command_dir</span> <span class="op">=</span> <span class="nam">os</span><span class="op">.</span><span class="nam">path</span><span class="op">.</span><span class="nam">join</span><span class="op">(</span><span class="nam">management_dir</span><span class="op">,</span> <span class="str">'commands'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t28" class="pln">    <span class="com"># Workaround for a Python 3.2 bug with pkgutil.iter_modules</span><span class="strut">&nbsp;</span></p>
<p id="t29" class="stm run hide_run">    <span class="nam">sys</span><span class="op">.</span><span class="nam">path_importer_cache</span><span class="op">.</span><span class="nam">pop</span><span class="op">(</span><span class="nam">command_dir</span><span class="op">,</span> <span class="nam">None</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t30" class="stm run hide_run">    <span class="key">return</span> <span class="op">[</span><span class="nam">name</span> <span class="key">for</span> <span class="nam">_</span><span class="op">,</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">is_pkg</span> <span class="key">in</span> <span class="nam">pkgutil</span><span class="op">.</span><span class="nam">iter_modules</span><span class="op">(</span><span class="op">[</span><span class="nam">npath</span><span class="op">(</span><span class="nam">command_dir</span><span class="op">)</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t31" class="pln">            <span class="key">if</span> <span class="key">not</span> <span class="nam">is_pkg</span> <span class="key">and</span> <span class="key">not</span> <span class="nam">name</span><span class="op">.</span><span class="nam">startswith</span><span class="op">(</span><span class="str">'_'</span><span class="op">)</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t32" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t33" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t34" class="stm run hide_run"><span class="key">def</span> <span class="nam">load_command_class</span><span class="op">(</span><span class="nam">app_name</span><span class="op">,</span> <span class="nam">name</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t35" class="pln">    <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t36" class="pln"><span class="str">    Given a command name and an application name, returns the Command</span><span class="strut">&nbsp;</span></p>
<p id="t37" class="pln"><span class="str">    class instance. All errors raised by the import process</span><span class="strut">&nbsp;</span></p>
<p id="t38" class="pln"><span class="str">    (ImportError, AttributeError) are allowed to propagate.</span><span class="strut">&nbsp;</span></p>
<p id="t39" class="pln"><span class="str">    """</span><span class="strut">&nbsp;</span></p>
<p id="t40" class="stm mis">    <span class="nam">module</span> <span class="op">=</span> <span class="nam">import_module</span><span class="op">(</span><span class="str">'%s.management.commands.%s'</span> <span class="op">%</span> <span class="op">(</span><span class="nam">app_name</span><span class="op">,</span> <span class="nam">name</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t41" class="stm mis">    <span class="key">return</span> <span class="nam">module</span><span class="op">.</span><span class="nam">Command</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t42" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t43" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t44" class="stm run hide_run"><span class="op">@</span><span class="nam">lru_cache</span><span class="op">.</span><span class="nam">lru_cache</span><span class="op">(</span><span class="nam">maxsize</span><span class="op">=</span><span class="nam">None</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t45" class="pln"><span class="key">def</span> <span class="nam">get_commands</span><span class="op">(</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t46" class="pln">    <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t47" class="pln"><span class="str">    Returns a dictionary mapping command names to their callback applications.</span><span class="strut">&nbsp;</span></p>
<p id="t48" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t49" class="pln"><span class="str">    This works by looking for a management.commands package in django.core, and</span><span class="strut">&nbsp;</span></p>
<p id="t50" class="pln"><span class="str">    in each installed application -- if a commands package exists, all commands</span><span class="strut">&nbsp;</span></p>
<p id="t51" class="pln"><span class="str">    in that package are registered.</span><span class="strut">&nbsp;</span></p>
<p id="t52" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t53" class="pln"><span class="str">    Core commands are always included. If a settings module has been</span><span class="strut">&nbsp;</span></p>
<p id="t54" class="pln"><span class="str">    specified, user-defined commands will also be included.</span><span class="strut">&nbsp;</span></p>
<p id="t55" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t56" class="pln"><span class="str">    The dictionary is in the format {command_name: app_name}. Key-value</span><span class="strut">&nbsp;</span></p>
<p id="t57" class="pln"><span class="str">    pairs from this dictionary can then be used in calls to</span><span class="strut">&nbsp;</span></p>
<p id="t58" class="pln"><span class="str">    load_command_class(app_name, command_name)</span><span class="strut">&nbsp;</span></p>
<p id="t59" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t60" class="pln"><span class="str">    If a specific version of a command must be loaded (e.g., with the</span><span class="strut">&nbsp;</span></p>
<p id="t61" class="pln"><span class="str">    startapp command), the instantiated module can be placed in the</span><span class="strut">&nbsp;</span></p>
<p id="t62" class="pln"><span class="str">    dictionary in place of the application name.</span><span class="strut">&nbsp;</span></p>
<p id="t63" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t64" class="pln"><span class="str">    The dictionary is cached on the first call and reused on subsequent</span><span class="strut">&nbsp;</span></p>
<p id="t65" class="pln"><span class="str">    calls.</span><span class="strut">&nbsp;</span></p>
<p id="t66" class="pln"><span class="str">    """</span><span class="strut">&nbsp;</span></p>
<p id="t67" class="stm run hide_run">    <span class="nam">commands</span> <span class="op">=</span> <span class="op">{</span><span class="nam">name</span><span class="op">:</span> <span class="str">'django.core'</span> <span class="key">for</span> <span class="nam">name</span> <span class="key">in</span> <span class="nam">find_commands</span><span class="op">(</span><span class="nam">upath</span><span class="op">(</span><span class="nam">__path__</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="op">)</span><span class="op">)</span><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t68" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t69" class="stm run hide_run">    <span class="key">if</span> <span class="key">not</span> <span class="nam">settings</span><span class="op">.</span><span class="nam">configured</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t70" class="stm mis">        <span class="key">return</span> <span class="nam">commands</span><span class="strut">&nbsp;</span></p>
<p id="t71" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t72" class="stm run hide_run">    <span class="key">for</span> <span class="nam">app_config</span> <span class="key">in</span> <span class="nam">reversed</span><span class="op">(</span><span class="nam">list</span><span class="op">(</span><span class="nam">apps</span><span class="op">.</span><span class="nam">get_app_configs</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t73" class="stm run hide_run">        <span class="nam">path</span> <span class="op">=</span> <span class="nam">os</span><span class="op">.</span><span class="nam">path</span><span class="op">.</span><span class="nam">join</span><span class="op">(</span><span class="nam">app_config</span><span class="op">.</span><span class="nam">path</span><span class="op">,</span> <span class="str">'management'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t74" class="stm run hide_run">        <span class="nam">commands</span><span class="op">.</span><span class="nam">update</span><span class="op">(</span><span class="op">{</span><span class="nam">name</span><span class="op">:</span> <span class="nam">app_config</span><span class="op">.</span><span class="nam">name</span> <span class="key">for</span> <span class="nam">name</span> <span class="key">in</span> <span class="nam">find_commands</span><span class="op">(</span><span class="nam">path</span><span class="op">)</span><span class="op">}</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t75" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t76" class="stm run hide_run">    <span class="key">return</span> <span class="nam">commands</span><span class="strut">&nbsp;</span></p>
<p id="t77" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t78" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t79" class="stm run hide_run"><span class="key">def</span> <span class="nam">call_command</span><span class="op">(</span><span class="nam">name</span><span class="op">,</span> <span class="op">*</span><span class="nam">args</span><span class="op">,</span> <span class="op">**</span><span class="nam">options</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t80" class="pln">    <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t81" class="pln"><span class="str">    Calls the given command, with the given options and args/kwargs.</span><span class="strut">&nbsp;</span></p>
<p id="t82" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t83" class="pln"><span class="str">    This is the primary API you should use for calling specific commands.</span><span class="strut">&nbsp;</span></p>
<p id="t84" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t85" class="pln"><span class="str">    Some examples:</span><span class="strut">&nbsp;</span></p>
<p id="t86" class="pln"><span class="str">        call_command('syncdb')</span><span class="strut">&nbsp;</span></p>
<p id="t87" class="pln"><span class="str">        call_command('shell', plain=True)</span><span class="strut">&nbsp;</span></p>
<p id="t88" class="pln"><span class="str">        call_command('sqlmigrate', 'myapp')</span><span class="strut">&nbsp;</span></p>
<p id="t89" class="pln"><span class="str">    """</span><span class="strut">&nbsp;</span></p>
<p id="t90" class="pln">    <span class="com"># Load the command object.</span><span class="strut">&nbsp;</span></p>
<p id="t91" class="stm mis">    <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t92" class="stm mis">        <span class="nam">app_name</span> <span class="op">=</span> <span class="nam">get_commands</span><span class="op">(</span><span class="op">)</span><span class="op">[</span><span class="nam">name</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t93" class="stm mis">    <span class="key">except</span> <span class="nam">KeyError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t94" class="stm mis">        <span class="key">raise</span> <span class="nam">CommandError</span><span class="op">(</span><span class="str">"Unknown command: %r"</span> <span class="op">%</span> <span class="nam">name</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t95" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t96" class="stm mis">    <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">app_name</span><span class="op">,</span> <span class="nam">BaseCommand</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t97" class="pln">        <span class="com"># If the command is already loaded, use it directly.</span><span class="strut">&nbsp;</span></p>
<p id="t98" class="stm mis">        <span class="nam">command</span> <span class="op">=</span> <span class="nam">app_name</span><span class="strut">&nbsp;</span></p>
<p id="t99" class="pln">    <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t100" class="stm mis">        <span class="nam">command</span> <span class="op">=</span> <span class="nam">load_command_class</span><span class="op">(</span><span class="nam">app_name</span><span class="op">,</span> <span class="nam">name</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t101" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t102" class="pln">    <span class="com"># Simulate argument parsing to get the option defaults (see #10080 for details).</span><span class="strut">&nbsp;</span></p>
<p id="t103" class="stm mis">    <span class="nam">parser</span> <span class="op">=</span> <span class="nam">command</span><span class="op">.</span><span class="nam">create_parser</span><span class="op">(</span><span class="str">''</span><span class="op">,</span> <span class="nam">name</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t104" class="stm mis">    <span class="key">if</span> <span class="nam">command</span><span class="op">.</span><span class="nam">use_argparse</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t105" class="pln">        <span class="com"># Use the `dest` option name from the parser option</span><span class="strut">&nbsp;</span></p>
<p id="t106" class="stm mis">        <span class="nam">opt_mapping</span> <span class="op">=</span> <span class="op">{</span><span class="nam">sorted</span><span class="op">(</span><span class="nam">s_opt</span><span class="op">.</span><span class="nam">option_strings</span><span class="op">)</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="op">.</span><span class="nam">lstrip</span><span class="op">(</span><span class="str">'-'</span><span class="op">)</span><span class="op">.</span><span class="nam">replace</span><span class="op">(</span><span class="str">'-'</span><span class="op">,</span> <span class="str">'_'</span><span class="op">)</span><span class="op">:</span> <span class="nam">s_opt</span><span class="op">.</span><span class="nam">dest</span><span class="strut">&nbsp;</span></p>
<p id="t107" class="pln">                       <span class="key">for</span> <span class="nam">s_opt</span> <span class="key">in</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">_actions</span> <span class="key">if</span> <span class="nam">s_opt</span><span class="op">.</span><span class="nam">option_strings</span><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t108" class="stm mis">        <span class="nam">arg_options</span> <span class="op">=</span> <span class="op">{</span><span class="nam">opt_mapping</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="nam">key</span><span class="op">,</span> <span class="nam">key</span><span class="op">)</span><span class="op">:</span> <span class="nam">value</span> <span class="key">for</span> <span class="nam">key</span><span class="op">,</span> <span class="nam">value</span> <span class="key">in</span> <span class="nam">options</span><span class="op">.</span><span class="nam">items</span><span class="op">(</span><span class="op">)</span><span class="op">}</span><span class="strut">&nbsp;</span></p>
<p id="t109" class="stm mis">        <span class="nam">defaults</span> <span class="op">=</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">parse_args</span><span class="op">(</span><span class="nam">args</span><span class="op">=</span><span class="nam">args</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t110" class="stm mis">        <span class="nam">defaults</span> <span class="op">=</span> <span class="nam">dict</span><span class="op">(</span><span class="nam">defaults</span><span class="op">.</span><span class="nam">_get_kwargs</span><span class="op">(</span><span class="op">)</span><span class="op">,</span> <span class="op">**</span><span class="nam">arg_options</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t111" class="pln">        <span class="com"># Move positional args out of options to mimic legacy optparse</span><span class="strut">&nbsp;</span></p>
<p id="t112" class="stm mis">        <span class="nam">args</span> <span class="op">=</span> <span class="nam">defaults</span><span class="op">.</span><span class="nam">pop</span><span class="op">(</span><span class="str">'args'</span><span class="op">,</span> <span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t113" class="pln">    <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t114" class="pln">        <span class="com"># Legacy optparse method</span><span class="strut">&nbsp;</span></p>
<p id="t115" class="stm mis">        <span class="nam">defaults</span><span class="op">,</span> <span class="nam">_</span> <span class="op">=</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">parse_args</span><span class="op">(</span><span class="nam">args</span><span class="op">=</span><span class="op">[</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t116" class="stm mis">        <span class="nam">defaults</span> <span class="op">=</span> <span class="nam">dict</span><span class="op">(</span><span class="nam">defaults</span><span class="op">.</span><span class="nam">__dict__</span><span class="op">,</span> <span class="op">**</span><span class="nam">options</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t117" class="stm mis">    <span class="key">if</span> <span class="str">'skip_checks'</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">options</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t118" class="stm mis">        <span class="nam">defaults</span><span class="op">[</span><span class="str">'skip_checks'</span><span class="op">]</span> <span class="op">=</span> <span class="nam">True</span><span class="strut">&nbsp;</span></p>
<p id="t119" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t120" class="stm mis">    <span class="key">return</span> <span class="nam">command</span><span class="op">.</span><span class="nam">execute</span><span class="op">(</span><span class="op">*</span><span class="nam">args</span><span class="op">,</span> <span class="op">**</span><span class="nam">defaults</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t121" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t122" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t123" class="stm run hide_run"><span class="key">class</span> <span class="nam">ManagementUtility</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t124" class="pln">    <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t125" class="pln"><span class="str">    Encapsulates the logic of the django-admin and manage.py utilities.</span><span class="strut">&nbsp;</span></p>
<p id="t126" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t127" class="pln"><span class="str">    A ManagementUtility has a number of commands, which can be manipulated</span><span class="strut">&nbsp;</span></p>
<p id="t128" class="pln"><span class="str">    by editing the self.commands dictionary.</span><span class="strut">&nbsp;</span></p>
<p id="t129" class="pln"><span class="str">    """</span><span class="strut">&nbsp;</span></p>
<p id="t130" class="stm run hide_run">    <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">argv</span><span class="op">=</span><span class="nam">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t131" class="stm run hide_run">        <span class="nam">self</span><span class="op">.</span><span class="nam">argv</span> <span class="op">=</span> <span class="nam">argv</span> <span class="key">or</span> <span class="nam">sys</span><span class="op">.</span><span class="nam">argv</span><span class="op">[</span><span class="op">:</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t132" class="stm run hide_run">        <span class="nam">self</span><span class="op">.</span><span class="nam">prog_name</span> <span class="op">=</span> <span class="nam">os</span><span class="op">.</span><span class="nam">path</span><span class="op">.</span><span class="nam">basename</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">argv</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t133" class="stm run hide_run">        <span class="nam">self</span><span class="op">.</span><span class="nam">settings_exception</span> <span class="op">=</span> <span class="nam">None</span><span class="strut">&nbsp;</span></p>
<p id="t134" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t135" class="stm run hide_run">    <span class="key">def</span> <span class="nam">main_help_text</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">commands_only</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t136" class="pln">        <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t137" class="pln"><span class="str">        Returns the script's main help text, as a string.</span><span class="strut">&nbsp;</span></p>
<p id="t138" class="pln"><span class="str">        """</span><span class="strut">&nbsp;</span></p>
<p id="t139" class="stm run hide_run">        <span class="key">if</span> <span class="nam">commands_only</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t140" class="stm mis">            <span class="nam">usage</span> <span class="op">=</span> <span class="nam">sorted</span><span class="op">(</span><span class="nam">get_commands</span><span class="op">(</span><span class="op">)</span><span class="op">.</span><span class="nam">keys</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t141" class="pln">        <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t142" class="stm run hide_run">            <span class="nam">usage</span> <span class="op">=</span> <span class="op">[</span><span class="strut">&nbsp;</span></p>
<p id="t143" class="pln">                <span class="str">""</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t144" class="pln">                <span class="str">"Type '%s help &lt;subcommand>' for help on a specific subcommand."</span> <span class="op">%</span> <span class="nam">self</span><span class="op">.</span><span class="nam">prog_name</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t145" class="pln">                <span class="str">""</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t146" class="pln">                <span class="str">"Available subcommands:"</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t147" class="pln">            <span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t148" class="stm run hide_run">            <span class="nam">commands_dict</span> <span class="op">=</span> <span class="nam">collections</span><span class="op">.</span><span class="nam">defaultdict</span><span class="op">(</span><span class="key">lambda</span><span class="op">:</span> <span class="op">[</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t149" class="stm run hide_run">            <span class="key">for</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">app</span> <span class="key">in</span> <span class="nam">six</span><span class="op">.</span><span class="nam">iteritems</span><span class="op">(</span><span class="nam">get_commands</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t150" class="stm run hide_run">                <span class="key">if</span> <span class="nam">app</span> <span class="op">==</span> <span class="str">'django.core'</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t151" class="stm run hide_run">                    <span class="nam">app</span> <span class="op">=</span> <span class="str">'django'</span><span class="strut">&nbsp;</span></p>
<p id="t152" class="pln">                <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t153" class="stm run hide_run">                    <span class="nam">app</span> <span class="op">=</span> <span class="nam">app</span><span class="op">.</span><span class="nam">rpartition</span><span class="op">(</span><span class="str">'.'</span><span class="op">)</span><span class="op">[</span><span class="op">-</span><span class="num">1</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t154" class="stm run hide_run">                <span class="nam">commands_dict</span><span class="op">[</span><span class="nam">app</span><span class="op">]</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">name</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t155" class="stm run hide_run">            <span class="nam">style</span> <span class="op">=</span> <span class="nam">color_style</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t156" class="stm run hide_run">            <span class="key">for</span> <span class="nam">app</span> <span class="key">in</span> <span class="nam">sorted</span><span class="op">(</span><span class="nam">commands_dict</span><span class="op">.</span><span class="nam">keys</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t157" class="stm run hide_run">                <span class="nam">usage</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="str">""</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t158" class="stm run hide_run">                <span class="nam">usage</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">style</span><span class="op">.</span><span class="nam">NOTICE</span><span class="op">(</span><span class="str">"[%s]"</span> <span class="op">%</span> <span class="nam">app</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t159" class="stm run hide_run">                <span class="key">for</span> <span class="nam">name</span> <span class="key">in</span> <span class="nam">sorted</span><span class="op">(</span><span class="nam">commands_dict</span><span class="op">[</span><span class="nam">app</span><span class="op">]</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t160" class="stm run hide_run">                    <span class="nam">usage</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="str">"    %s"</span> <span class="op">%</span> <span class="nam">name</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t161" class="pln">            <span class="com"># Output an extra note if settings are not properly configured</span><span class="strut">&nbsp;</span></p>
<p id="t162" class="stm run hide_run">            <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">settings_exception</span> <span class="key">is</span> <span class="key">not</span> <span class="nam">None</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t163" class="stm mis">                <span class="nam">usage</span><span class="op">.</span><span class="nam">append</span><span class="op">(</span><span class="nam">style</span><span class="op">.</span><span class="nam">NOTICE</span><span class="op">(</span><span class="strut">&nbsp;</span></p>
<p id="t164" class="pln">                    <span class="str">"Note that only Django core commands are listed "</span><span class="strut">&nbsp;</span></p>
<p id="t165" class="pln">                    <span class="str">"as settings are not properly configured (error: %s)."</span><span class="strut">&nbsp;</span></p>
<p id="t166" class="pln">                    <span class="op">%</span> <span class="nam">self</span><span class="op">.</span><span class="nam">settings_exception</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t167" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t168" class="stm run hide_run">        <span class="key">return</span> <span class="str">'\n'</span><span class="op">.</span><span class="nam">join</span><span class="op">(</span><span class="nam">usage</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t169" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t170" class="stm run hide_run">    <span class="key">def</span> <span class="nam">fetch_command</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">subcommand</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t171" class="pln">        <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t172" class="pln"><span class="str">        Tries to fetch the given subcommand, printing a message with the</span><span class="strut">&nbsp;</span></p>
<p id="t173" class="pln"><span class="str">        appropriate command called from the command line (usually</span><span class="strut">&nbsp;</span></p>
<p id="t174" class="pln"><span class="str">        "django-admin" or "manage.py") if it can't be found.</span><span class="strut">&nbsp;</span></p>
<p id="t175" class="pln"><span class="str">        """</span><span class="strut">&nbsp;</span></p>
<p id="t176" class="pln">        <span class="com"># Get commands outside of try block to prevent swallowing exceptions</span><span class="strut">&nbsp;</span></p>
<p id="t177" class="stm mis">        <span class="nam">commands</span> <span class="op">=</span> <span class="nam">get_commands</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t178" class="stm mis">        <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t179" class="stm mis">            <span class="nam">app_name</span> <span class="op">=</span> <span class="nam">commands</span><span class="op">[</span><span class="nam">subcommand</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t180" class="stm mis">        <span class="key">except</span> <span class="nam">KeyError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t181" class="pln">            <span class="com"># This might trigger ImproperlyConfigured (masked in get_commands)</span><span class="strut">&nbsp;</span></p>
<p id="t182" class="stm mis">            <span class="nam">settings</span><span class="op">.</span><span class="nam">INSTALLED_APPS</span><span class="strut">&nbsp;</span></p>
<p id="t183" class="stm mis">            <span class="nam">sys</span><span class="op">.</span><span class="nam">stderr</span><span class="op">.</span><span class="nam">write</span><span class="op">(</span><span class="str">"Unknown command: %r\nType '%s help' for usage.\n"</span> <span class="op">%</span><span class="strut">&nbsp;</span></p>
<p id="t184" class="pln">                <span class="op">(</span><span class="nam">subcommand</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">prog_name</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t185" class="stm mis">            <span class="nam">sys</span><span class="op">.</span><span class="nam">exit</span><span class="op">(</span><span class="num">1</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t186" class="stm mis">        <span class="key">if</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">app_name</span><span class="op">,</span> <span class="nam">BaseCommand</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t187" class="pln">            <span class="com"># If the command is already loaded, use it directly.</span><span class="strut">&nbsp;</span></p>
<p id="t188" class="stm mis">            <span class="nam">klass</span> <span class="op">=</span> <span class="nam">app_name</span><span class="strut">&nbsp;</span></p>
<p id="t189" class="pln">        <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t190" class="stm mis">            <span class="nam">klass</span> <span class="op">=</span> <span class="nam">load_command_class</span><span class="op">(</span><span class="nam">app_name</span><span class="op">,</span> <span class="nam">subcommand</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t191" class="stm mis">        <span class="key">return</span> <span class="nam">klass</span><span class="strut">&nbsp;</span></p>
<p id="t192" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t193" class="stm run hide_run">    <span class="key">def</span> <span class="nam">autocomplete</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t194" class="pln">        <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t195" class="pln"><span class="str">        Output completion suggestions for BASH.</span><span class="strut">&nbsp;</span></p>
<p id="t196" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t197" class="pln"><span class="str">        The output of this function is passed to BASH's `COMREPLY` variable and</span><span class="strut">&nbsp;</span></p>
<p id="t198" class="pln"><span class="str">        treated as completion suggestions. `COMREPLY` expects a space</span><span class="strut">&nbsp;</span></p>
<p id="t199" class="pln"><span class="str">        separated string as the result.</span><span class="strut">&nbsp;</span></p>
<p id="t200" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t201" class="pln"><span class="str">        The `COMP_WORDS` and `COMP_CWORD` BASH environment variables are used</span><span class="strut">&nbsp;</span></p>
<p id="t202" class="pln"><span class="str">        to get information about the cli input. Please refer to the BASH</span><span class="strut">&nbsp;</span></p>
<p id="t203" class="pln"><span class="str">        man-page for more information about this variables.</span><span class="strut">&nbsp;</span></p>
<p id="t204" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t205" class="pln"><span class="str">        Subcommand options are saved as pairs. A pair consists of</span><span class="strut">&nbsp;</span></p>
<p id="t206" class="pln"><span class="str">        the long option string (e.g. '--exclude') and a boolean</span><span class="strut">&nbsp;</span></p>
<p id="t207" class="pln"><span class="str">        value indicating if the option requires arguments. When printing to</span><span class="strut">&nbsp;</span></p>
<p id="t208" class="pln"><span class="str">        stdout, an equal sign is appended to options which require arguments.</span><span class="strut">&nbsp;</span></p>
<p id="t209" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t210" class="pln"><span class="str">        Note: If debugging this function, it is recommended to write the debug</span><span class="strut">&nbsp;</span></p>
<p id="t211" class="pln"><span class="str">        output in a separate file. Otherwise the debug output will be treated</span><span class="strut">&nbsp;</span></p>
<p id="t212" class="pln"><span class="str">        and formatted as potential completion suggestions.</span><span class="strut">&nbsp;</span></p>
<p id="t213" class="pln"><span class="str">        """</span><span class="strut">&nbsp;</span></p>
<p id="t214" class="pln">        <span class="com"># Don't complete if user hasn't sourced bash_completion file.</span><span class="strut">&nbsp;</span></p>
<p id="t215" class="stm run hide_run">        <span class="key">if</span> <span class="str">'DJANGO_AUTO_COMPLETE'</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">os</span><span class="op">.</span><span class="nam">environ</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t216" class="stm run hide_run">            <span class="key">return</span><span class="strut">&nbsp;</span></p>
<p id="t217" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t218" class="stm mis">        <span class="nam">cwords</span> <span class="op">=</span> <span class="nam">os</span><span class="op">.</span><span class="nam">environ</span><span class="op">[</span><span class="str">'COMP_WORDS'</span><span class="op">]</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="op">)</span><span class="op">[</span><span class="num">1</span><span class="op">:</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t219" class="stm mis">        <span class="nam">cword</span> <span class="op">=</span> <span class="nam">int</span><span class="op">(</span><span class="nam">os</span><span class="op">.</span><span class="nam">environ</span><span class="op">[</span><span class="str">'COMP_CWORD'</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t220" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t221" class="stm mis">        <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t222" class="stm mis">            <span class="nam">curr</span> <span class="op">=</span> <span class="nam">cwords</span><span class="op">[</span><span class="nam">cword</span> <span class="op">-</span> <span class="num">1</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t223" class="stm mis">        <span class="key">except</span> <span class="nam">IndexError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t224" class="stm mis">            <span class="nam">curr</span> <span class="op">=</span> <span class="str">''</span><span class="strut">&nbsp;</span></p>
<p id="t225" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t226" class="stm mis">        <span class="nam">subcommands</span> <span class="op">=</span> <span class="nam">list</span><span class="op">(</span><span class="nam">get_commands</span><span class="op">(</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span> <span class="op">[</span><span class="str">'help'</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t227" class="stm mis">        <span class="nam">options</span> <span class="op">=</span> <span class="op">[</span><span class="op">(</span><span class="str">'--help'</span><span class="op">,</span> <span class="nam">False</span><span class="op">)</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t228" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t229" class="pln">        <span class="com"># subcommand</span><span class="strut">&nbsp;</span></p>
<p id="t230" class="stm mis">        <span class="key">if</span> <span class="nam">cword</span> <span class="op">==</span> <span class="num">1</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t231" class="stm mis">            <span class="key">print</span><span class="op">(</span><span class="str">' '</span><span class="op">.</span><span class="nam">join</span><span class="op">(</span><span class="nam">sorted</span><span class="op">(</span><span class="nam">filter</span><span class="op">(</span><span class="key">lambda</span> <span class="nam">x</span><span class="op">:</span> <span class="nam">x</span><span class="op">.</span><span class="nam">startswith</span><span class="op">(</span><span class="nam">curr</span><span class="op">)</span><span class="op">,</span> <span class="nam">subcommands</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t232" class="pln">        <span class="com"># subcommand options</span><span class="strut">&nbsp;</span></p>
<p id="t233" class="pln">        <span class="com"># special case: the 'help' subcommand has no options</span><span class="strut">&nbsp;</span></p>
<p id="t234" class="stm mis">        <span class="key">elif</span> <span class="nam">cwords</span><span class="op">[</span><span class="num">0</span><span class="op">]</span> <span class="key">in</span> <span class="nam">subcommands</span> <span class="key">and</span> <span class="nam">cwords</span><span class="op">[</span><span class="num">0</span><span class="op">]</span> <span class="op">!=</span> <span class="str">'help'</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t235" class="stm mis">            <span class="nam">subcommand_cls</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">fetch_command</span><span class="op">(</span><span class="nam">cwords</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t236" class="pln">            <span class="com"># special case: 'runfcgi' stores additional options as</span><span class="strut">&nbsp;</span></p>
<p id="t237" class="pln">            <span class="com"># 'key=value' pairs</span><span class="strut">&nbsp;</span></p>
<p id="t238" class="stm mis">            <span class="key">if</span> <span class="nam">cwords</span><span class="op">[</span><span class="num">0</span><span class="op">]</span> <span class="op">==</span> <span class="str">'runfcgi'</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t239" class="stm mis">                <span class="key">from</span> <span class="nam">django</span><span class="op">.</span><span class="nam">core</span><span class="op">.</span><span class="nam">servers</span><span class="op">.</span><span class="nam">fastcgi</span> <span class="key">import</span> <span class="nam">FASTCGI_OPTIONS</span><span class="strut">&nbsp;</span></p>
<p id="t240" class="stm mis">                <span class="nam">options</span><span class="op">.</span><span class="nam">extend</span><span class="op">(</span><span class="op">(</span><span class="nam">k</span><span class="op">,</span> <span class="num">1</span><span class="op">)</span> <span class="key">for</span> <span class="nam">k</span> <span class="key">in</span> <span class="nam">FASTCGI_OPTIONS</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t241" class="pln">            <span class="com"># special case: add the names of installed apps to options</span><span class="strut">&nbsp;</span></p>
<p id="t242" class="stm mis">            <span class="key">elif</span> <span class="nam">cwords</span><span class="op">[</span><span class="num">0</span><span class="op">]</span> <span class="key">in</span> <span class="op">(</span><span class="str">'dumpdata'</span><span class="op">,</span> <span class="str">'sql'</span><span class="op">,</span> <span class="str">'sqlall'</span><span class="op">,</span> <span class="str">'sqlclear'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t243" class="pln">                    <span class="str">'sqlcustom'</span><span class="op">,</span> <span class="str">'sqlindexes'</span><span class="op">,</span> <span class="str">'sqlmigrate'</span><span class="op">,</span> <span class="str">'sqlsequencereset'</span><span class="op">,</span> <span class="str">'test'</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t244" class="stm mis">                <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t245" class="stm mis">                    <span class="nam">app_configs</span> <span class="op">=</span> <span class="nam">apps</span><span class="op">.</span><span class="nam">get_app_configs</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t246" class="pln">                    <span class="com"># Get the last part of the dotted path as the app name.</span><span class="strut">&nbsp;</span></p>
<p id="t247" class="stm mis">                    <span class="nam">options</span><span class="op">.</span><span class="nam">extend</span><span class="op">(</span><span class="op">(</span><span class="nam">app_config</span><span class="op">.</span><span class="nam">label</span><span class="op">,</span> <span class="num">0</span><span class="op">)</span> <span class="key">for</span> <span class="nam">app_config</span> <span class="key">in</span> <span class="nam">app_configs</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t248" class="stm mis">                <span class="key">except</span> <span class="nam">ImportError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t249" class="pln">                    <span class="com"># Fail silently if DJANGO_SETTINGS_MODULE isn't set. The</span><span class="strut">&nbsp;</span></p>
<p id="t250" class="pln">                    <span class="com"># user will find out once they execute the command.</span><span class="strut">&nbsp;</span></p>
<p id="t251" class="stm mis">                    <span class="key">pass</span><span class="strut">&nbsp;</span></p>
<p id="t252" class="stm mis">            <span class="nam">parser</span> <span class="op">=</span> <span class="nam">subcommand_cls</span><span class="op">.</span><span class="nam">create_parser</span><span class="op">(</span><span class="str">''</span><span class="op">,</span> <span class="nam">cwords</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t253" class="stm mis">            <span class="key">if</span> <span class="nam">subcommand_cls</span><span class="op">.</span><span class="nam">use_argparse</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t254" class="stm mis">                <span class="nam">options</span><span class="op">.</span><span class="nam">extend</span><span class="op">(</span><span class="op">(</span><span class="nam">sorted</span><span class="op">(</span><span class="nam">s_opt</span><span class="op">.</span><span class="nam">option_strings</span><span class="op">)</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="op">,</span> <span class="nam">s_opt</span><span class="op">.</span><span class="nam">nargs</span> <span class="op">!=</span> <span class="num">0</span><span class="op">)</span> <span class="key">for</span> <span class="nam">s_opt</span> <span class="key">in</span><span class="strut">&nbsp;</span></p>
<p id="t255" class="pln">                               <span class="nam">parser</span><span class="op">.</span><span class="nam">_actions</span> <span class="key">if</span> <span class="nam">s_opt</span><span class="op">.</span><span class="nam">option_strings</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t256" class="pln">            <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t257" class="stm mis">                <span class="nam">options</span><span class="op">.</span><span class="nam">extend</span><span class="op">(</span><span class="op">(</span><span class="nam">s_opt</span><span class="op">.</span><span class="nam">get_opt_string</span><span class="op">(</span><span class="op">)</span><span class="op">,</span> <span class="nam">s_opt</span><span class="op">.</span><span class="nam">nargs</span><span class="op">)</span> <span class="key">for</span> <span class="nam">s_opt</span> <span class="key">in</span><span class="strut">&nbsp;</span></p>
<p id="t258" class="pln">                               <span class="nam">parser</span><span class="op">.</span><span class="nam">option_list</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t259" class="pln">            <span class="com"># filter out previously specified options from available options</span><span class="strut">&nbsp;</span></p>
<p id="t260" class="stm mis">            <span class="nam">prev_opts</span> <span class="op">=</span> <span class="op">[</span><span class="nam">x</span><span class="op">.</span><span class="nam">split</span><span class="op">(</span><span class="str">'='</span><span class="op">)</span><span class="op">[</span><span class="num">0</span><span class="op">]</span> <span class="key">for</span> <span class="nam">x</span> <span class="key">in</span> <span class="nam">cwords</span><span class="op">[</span><span class="num">1</span><span class="op">:</span><span class="nam">cword</span> <span class="op">-</span> <span class="num">1</span><span class="op">]</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t261" class="stm mis">            <span class="nam">options</span> <span class="op">=</span> <span class="op">[</span><span class="nam">opt</span> <span class="key">for</span> <span class="nam">opt</span> <span class="key">in</span> <span class="nam">options</span> <span class="key">if</span> <span class="nam">opt</span><span class="op">[</span><span class="num">0</span><span class="op">]</span> <span class="key">not</span> <span class="key">in</span> <span class="nam">prev_opts</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t262" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t263" class="pln">            <span class="com"># filter options by current input</span><span class="strut">&nbsp;</span></p>
<p id="t264" class="stm mis">            <span class="nam">options</span> <span class="op">=</span> <span class="nam">sorted</span><span class="op">(</span><span class="op">(</span><span class="nam">k</span><span class="op">,</span> <span class="nam">v</span><span class="op">)</span> <span class="key">for</span> <span class="nam">k</span><span class="op">,</span> <span class="nam">v</span> <span class="key">in</span> <span class="nam">options</span> <span class="key">if</span> <span class="nam">k</span><span class="op">.</span><span class="nam">startswith</span><span class="op">(</span><span class="nam">curr</span><span class="op">)</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t265" class="stm mis">            <span class="key">for</span> <span class="nam">option</span> <span class="key">in</span> <span class="nam">options</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t266" class="stm mis">                <span class="nam">opt_label</span> <span class="op">=</span> <span class="nam">option</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t267" class="pln">                <span class="com"># append '=' to options which require args</span><span class="strut">&nbsp;</span></p>
<p id="t268" class="stm mis">                <span class="key">if</span> <span class="nam">option</span><span class="op">[</span><span class="num">1</span><span class="op">]</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t269" class="stm mis">                    <span class="nam">opt_label</span> <span class="op">+=</span> <span class="str">'='</span><span class="strut">&nbsp;</span></p>
<p id="t270" class="stm mis">                <span class="key">print</span><span class="op">(</span><span class="nam">opt_label</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t271" class="stm mis">        <span class="nam">sys</span><span class="op">.</span><span class="nam">exit</span><span class="op">(</span><span class="num">1</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t272" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t273" class="stm run hide_run">    <span class="key">def</span> <span class="nam">execute</span><span class="op">(</span><span class="nam">self</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t274" class="pln">        <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t275" class="pln"><span class="str">        Given the command-line arguments, this figures out which subcommand is</span><span class="strut">&nbsp;</span></p>
<p id="t276" class="pln"><span class="str">        being run, creates a parser appropriate to that command, and runs it.</span><span class="strut">&nbsp;</span></p>
<p id="t277" class="pln"><span class="str">        """</span><span class="strut">&nbsp;</span></p>
<p id="t278" class="stm run hide_run">        <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t279" class="stm run hide_run">            <span class="nam">subcommand</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">argv</span><span class="op">[</span><span class="num">1</span><span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t280" class="stm run hide_run">        <span class="key">except</span> <span class="nam">IndexError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t281" class="stm run hide_run">            <span class="nam">subcommand</span> <span class="op">=</span> <span class="str">'help'</span>  <span class="com"># Display help if no arguments were given.</span><span class="strut">&nbsp;</span></p>
<p id="t282" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t283" class="pln">        <span class="com"># Preprocess options to extract --settings and --pythonpath.</span><span class="strut">&nbsp;</span></p>
<p id="t284" class="pln">        <span class="com"># These options could affect the commands that are available, so they</span><span class="strut">&nbsp;</span></p>
<p id="t285" class="pln">        <span class="com"># must be processed early.</span><span class="strut">&nbsp;</span></p>
<p id="t286" class="stm run hide_run">        <span class="nam">parser</span> <span class="op">=</span> <span class="nam">CommandParser</span><span class="op">(</span><span class="nam">None</span><span class="op">,</span> <span class="nam">usage</span><span class="op">=</span><span class="str">"%(prog)s subcommand [options] [args]"</span><span class="op">,</span> <span class="nam">add_help</span><span class="op">=</span><span class="nam">False</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t287" class="stm run hide_run">        <span class="nam">parser</span><span class="op">.</span><span class="nam">add_argument</span><span class="op">(</span><span class="str">'--settings'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t288" class="stm run hide_run">        <span class="nam">parser</span><span class="op">.</span><span class="nam">add_argument</span><span class="op">(</span><span class="str">'--pythonpath'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t289" class="stm run hide_run">        <span class="nam">parser</span><span class="op">.</span><span class="nam">add_argument</span><span class="op">(</span><span class="str">'args'</span><span class="op">,</span> <span class="nam">nargs</span><span class="op">=</span><span class="str">'*'</span><span class="op">)</span>  <span class="com"># catch-all</span><span class="strut">&nbsp;</span></p>
<p id="t290" class="stm run hide_run">        <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t291" class="stm run hide_run">            <span class="nam">options</span><span class="op">,</span> <span class="nam">args</span> <span class="op">=</span> <span class="nam">parser</span><span class="op">.</span><span class="nam">parse_known_args</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">argv</span><span class="op">[</span><span class="num">2</span><span class="op">:</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t292" class="stm run hide_run">            <span class="nam">handle_default_options</span><span class="op">(</span><span class="nam">options</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t293" class="stm mis">        <span class="key">except</span> <span class="nam">CommandError</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t294" class="stm mis">            <span class="key">pass</span>  <span class="com"># Ignore any option errors at this point.</span><span class="strut">&nbsp;</span></p>
<p id="t295" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t296" class="stm run hide_run">        <span class="nam">no_settings_commands</span> <span class="op">=</span> <span class="op">[</span><span class="strut">&nbsp;</span></p>
<p id="t297" class="pln">            <span class="str">'help'</span><span class="op">,</span> <span class="str">'version'</span><span class="op">,</span> <span class="str">'--help'</span><span class="op">,</span> <span class="str">'--version'</span><span class="op">,</span> <span class="str">'-h'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t298" class="pln">            <span class="str">'compilemessages'</span><span class="op">,</span> <span class="str">'makemessages'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t299" class="pln">            <span class="str">'startapp'</span><span class="op">,</span> <span class="str">'startproject'</span><span class="op">,</span><span class="strut">&nbsp;</span></p>
<p id="t300" class="pln">        <span class="op">]</span><span class="strut">&nbsp;</span></p>
<p id="t301" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t302" class="stm run hide_run">        <span class="key">try</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t303" class="stm run hide_run">            <span class="nam">settings</span><span class="op">.</span><span class="nam">INSTALLED_APPS</span><span class="strut">&nbsp;</span></p>
<p id="t304" class="stm mis">        <span class="key">except</span> <span class="nam">ImproperlyConfigured</span> <span class="key">as</span> <span class="nam">exc</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t305" class="stm mis">            <span class="nam">self</span><span class="op">.</span><span class="nam">settings_exception</span> <span class="op">=</span> <span class="nam">exc</span><span class="strut">&nbsp;</span></p>
<p id="t306" class="pln">            <span class="com"># A handful of built-in management commands work without settings.</span><span class="strut">&nbsp;</span></p>
<p id="t307" class="pln">            <span class="com"># Load the default settings -- where INSTALLED_APPS is empty.</span><span class="strut">&nbsp;</span></p>
<p id="t308" class="stm mis">            <span class="key">if</span> <span class="nam">subcommand</span> <span class="key">in</span> <span class="nam">no_settings_commands</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t309" class="stm mis">                <span class="nam">settings</span><span class="op">.</span><span class="nam">configure</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t310" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t311" class="stm run hide_run">        <span class="key">if</span> <span class="nam">settings</span><span class="op">.</span><span class="nam">configured</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t312" class="stm run hide_run">            <span class="nam">django</span><span class="op">.</span><span class="nam">setup</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t313" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t314" class="stm run hide_run">        <span class="nam">self</span><span class="op">.</span><span class="nam">autocomplete</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t315" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t316" class="stm run hide_run">        <span class="key">if</span> <span class="nam">subcommand</span> <span class="op">==</span> <span class="str">'help'</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t317" class="stm run hide_run">            <span class="key">if</span> <span class="str">'--commands'</span> <span class="key">in</span> <span class="nam">args</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t318" class="stm mis">                <span class="nam">sys</span><span class="op">.</span><span class="nam">stdout</span><span class="op">.</span><span class="nam">write</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">main_help_text</span><span class="op">(</span><span class="nam">commands_only</span><span class="op">=</span><span class="nam">True</span><span class="op">)</span> <span class="op">+</span> <span class="str">'\n'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t319" class="stm run hide_run">            <span class="key">elif</span> <span class="nam">len</span><span class="op">(</span><span class="nam">options</span><span class="op">.</span><span class="nam">args</span><span class="op">)</span> <span class="op">&lt;</span> <span class="num">1</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t320" class="stm run hide_run">                <span class="nam">sys</span><span class="op">.</span><span class="nam">stdout</span><span class="op">.</span><span class="nam">write</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">main_help_text</span><span class="op">(</span><span class="op">)</span> <span class="op">+</span> <span class="str">'\n'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t321" class="pln">            <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t322" class="stm mis">                <span class="nam">self</span><span class="op">.</span><span class="nam">fetch_command</span><span class="op">(</span><span class="nam">options</span><span class="op">.</span><span class="nam">args</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="op">)</span><span class="op">.</span><span class="nam">print_help</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">prog_name</span><span class="op">,</span> <span class="nam">options</span><span class="op">.</span><span class="nam">args</span><span class="op">[</span><span class="num">0</span><span class="op">]</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t323" class="pln">        <span class="com"># Special-cases: We want 'django-admin --version' and</span><span class="strut">&nbsp;</span></p>
<p id="t324" class="pln">        <span class="com"># 'django-admin --help' to work, for backwards compatibility.</span><span class="strut">&nbsp;</span></p>
<p id="t325" class="stm mis">        <span class="key">elif</span> <span class="nam">subcommand</span> <span class="op">==</span> <span class="str">'version'</span> <span class="key">or</span> <span class="nam">self</span><span class="op">.</span><span class="nam">argv</span><span class="op">[</span><span class="num">1</span><span class="op">:</span><span class="op">]</span> <span class="op">==</span> <span class="op">[</span><span class="str">'--version'</span><span class="op">]</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t326" class="stm mis">            <span class="nam">sys</span><span class="op">.</span><span class="nam">stdout</span><span class="op">.</span><span class="nam">write</span><span class="op">(</span><span class="nam">django</span><span class="op">.</span><span class="nam">get_version</span><span class="op">(</span><span class="op">)</span> <span class="op">+</span> <span class="str">'\n'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t327" class="stm mis">        <span class="key">elif</span> <span class="nam">self</span><span class="op">.</span><span class="nam">argv</span><span class="op">[</span><span class="num">1</span><span class="op">:</span><span class="op">]</span> <span class="key">in</span> <span class="op">(</span><span class="op">[</span><span class="str">'--help'</span><span class="op">]</span><span class="op">,</span> <span class="op">[</span><span class="str">'-h'</span><span class="op">]</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t328" class="stm mis">            <span class="nam">sys</span><span class="op">.</span><span class="nam">stdout</span><span class="op">.</span><span class="nam">write</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">main_help_text</span><span class="op">(</span><span class="op">)</span> <span class="op">+</span> <span class="str">'\n'</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t329" class="pln">        <span class="key">else</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t330" class="stm mis">            <span class="nam">self</span><span class="op">.</span><span class="nam">fetch_command</span><span class="op">(</span><span class="nam">subcommand</span><span class="op">)</span><span class="op">.</span><span class="nam">run_from_argv</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">argv</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t331" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t332" class="pln"><span class="strut">&nbsp;</span></p>
<p id="t333" class="stm run hide_run"><span class="key">def</span> <span class="nam">execute_from_command_line</span><span class="op">(</span><span class="nam">argv</span><span class="op">=</span><span class="nam">None</span><span class="op">)</span><span class="op">:</span><span class="strut">&nbsp;</span></p>
<p id="t334" class="pln">    <span class="str">"""</span><span class="strut">&nbsp;</span></p>
<p id="t335" class="pln"><span class="str">    A simple method that runs a ManagementUtility.</span><span class="strut">&nbsp;</span></p>
<p id="t336" class="pln"><span class="str">    """</span><span class="strut">&nbsp;</span></p>
<p id="t337" class="stm run hide_run">    <span class="nam">utility</span> <span class="op">=</span> <span class="nam">ManagementUtility</span><span class="op">(</span><span class="nam">argv</span><span class="op">)</span><span class="strut">&nbsp;</span></p>
<p id="t338" class="stm run hide_run">    <span class="nam">utility</span><span class="op">.</span><span class="nam">execute</span><span class="op">(</span><span class="op">)</span><span class="strut">&nbsp;</span></p>

            </td>
        </tr>
    </table>
</div>

<div id="footer">
    <div class="content">
        <p>
            <a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v4.4.2</a>,
            created at 2017-12-30 20:26
        </p>
    </div>
</div>

</body>
</html>
